In software-defined datacenters, overlay networks are created over the physical network infrastructure to simplify the networks' provisioning and reconfiguring. The overlay networks usually include virtual machines and switches, and communications between the virtual machines are usually realized by encapsulating data packets communicated between the machines. Upon receiving data packets from source virtual machines, the switches encapsulate the packets, and forward the encapsulated packets to other switches via the physical network infrastructure underlay. Upon receiving the encapsulated packets, the switches decapsulate the packets, and forward the decapsulated packets to destination virtual machines.
While the concept of encapsulating and decapsulating data packets in virtual networks appears to be straightforward, in practice—the process is usually time consuming and taxing on computer resources. It also places significant demands on overall throughput of the network traffic.